2020-2021 Sunseeker Telemetry and Lighting System
wdt_ex2_watchdogMode.c
Go to the documentation of this file.
1 /* --COPYRIGHT--,BSD
2  * Copyright (c) 2017, Texas Instruments Incorporated
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * * Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  *
12  * * Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in the
14  * documentation and/or other materials provided with the distribution.
15  *
16  * * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  * --/COPYRIGHT--*/
32 /*******************************************************************************
33  * MSP430i2xx Watchdog Timer - Watchdog Mode
34  *
35  * Description: In this example, the Watchdog Timer is setup in watchdog mode
36  * using SMCLK as a source. SMCLK is configured as the DCO / 16 and the WDT
37  * is configured as SMCLK / 32768 resulting in a Watchdog period of 32ms. The
38  * LED is turned on when entering LPM and turned off once the device has been
39  * reset by the WDT. After reset the device checks to make sure it was the
40  * WDT that caused the interrupt and turns off the LED.
41  *
42  *
43  * MSP430i2041
44  * ------------------
45  * /|\| |
46  * | | |
47  * --|RST |
48  * | P1.4|-->LED
49  * | |
50  * | |
51  * | |
52  * | |
53  *
54  * Author: Zack Lalanne
55  ******************************************************************************/
56 
57 #include "driverlib.h"
58 
59 int main(void) {
60 
61  // Stop the WDT
62  WDT_hold(WDT_BASE);
63 
64  // Check if WDT caused reset
65  if(SFR_getInterruptStatus(SFR_WATCHDOG_INTERRUPT)) {
66  SFR_clearInterrupt(SFR_WATCHDOG_INTERRUPT);
67  GPIO_setOutputLowOnPin(GPIO_PORT_P1, GPIO_PIN4);
68  }
69 
70  GPIO_setAsOutputPin(GPIO_PORT_P1, GPIO_PIN4);
71 
72  // Setup DCO to use internal resistor. DCO calibrated at 16.384 MHz
73  CS_setupDCO(CS_INTERNAL_RESISTOR);
74 
75  // Setup SMCLK as DCO / 16 = 1.024 MHz
76  CS_initClockSignal(CS_SMCLK, CS_CLOCK_DIVIDER_16);
77 
78  // Configure interval to SMCLK / 32768 = 32ms
79  WDT_initWatchdogTimer(WDT_BASE,
80  WDT_CLOCKSOURCE_SMCLK,
81  WDT_CLOCKDIVIDER_32K);
82  WDT_resetTimer(WDT_BASE);
83 
84  GPIO_setOutputHighOnPin(GPIO_PORT_P1, GPIO_PIN4);
85 
86  // Start the WDT and enter LPM0
87  WDT_start(WDT_BASE);
88  __bis_SR_register(LPM0_bits);
89 }
GPIO_setOutputHighOnPin(GPIO_PORT_LED1|GPIO_PORT_LED2, GPIO_PIN_LED1|GPIO_PIN_LED2)
GPIO_setOutputLowOnPin(GPIO_PORT_LED1|GPIO_PORT_LED2, GPIO_PIN_LED1|GPIO_PIN_LED2)
int main(void)